perm filename SPARE[AM,DBL] blob sn#185640 filedate 1975-11-12 generic text, type T, neo UTF8
(FILECREATED "12-NOV-75 04:39:19" <LENAT>SPARE.;2 8863   

     previous date: "12-NOV-75 02:16:46" <LENAT>SPARE.;1)


  (LISPXPRINT (QUOTE SPARECOMS)
	      T T)
  [RPAQQ SPARECOMS
	 ((FNS ACEX-OLD ALLQ CLEAN CLEANALL COM-ANCES DIE FAN FRAC-INCLU FRIPPLE GCB GET-TIME GEXEC INIT-PART JUST-ONCE 
	       LESS-INT LRU-TAG MAX MAX1 MORE-GENERAL MORE-INT MORE-SPECIFIC NO-COMMEN ONLY-COMS PUTU RE-JUDGE 
	       READ-LOOP READ1CHAR RIPPLE-SIMULT RIPPLE1 RUN-COMM-IF-MUST SAME-TYPE SATISFIES SEQX SETBINT SETBINT 
	       SUB-CANDS SWAPB SWGETB SWSETB UNDO-INIT XEQ-CLEAN XTR-BEING)
	  (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
										(NLAML RE-JUDGE JUST-ONCE ALLQ]
(DEFINEQ

(ACEX-OLD
  [LAMBDA (B)
    (OR [RUN-COMM-IF-MUST (XTR-AC-EX (GETB B (QUOTE EXS]
	(RUN-COMM-IF-MUST (XTR-AC-EX (APPLY* (QUOTE EXS)
					     B])

(ALLQ
  [NLAMBDA (L)
    (COND
      ((NLISTP L)
	(KWOTE L))
      ((CONS (QUOTE LIST)
	     (MAPCAR L (QUOTE ALLQ])

(CLEAN
  [LAMBDA (P1 P2 P1I P2I)
    (SETQ P2I (GETB (GLUE (QUOTE ANYB)
			  P2)
		    (QUOTE INIT)))
    (MAPC CONCEPTS (FUNCTION (LAMBDA (C)
	      (MAPC (GETB C P1)
		    (FUNCTION (LAMBDA (B)
			(AND (IS-CON B)
			     (PUT B P2 (APPEND P2I (UNION (LIST C)
							  (GETB B P2])

(CLEANALL
  [LAMBDA NIL
    (CLEAN (QUOTE SPEC)
	   (QUOTE GENL))
    (CLEAN (QUOTE GENL)
	   (QUOTE SPEC))
    (CLEAN (QUOTE UP)
	   (QUOTE EXS])

(COM-ANCES
  [LAMBDA (B1 B2)
    (INTERSECTION (RIPPLE B1 (QUOTE GENL))
		  (RIPPLE B2 (QUOTE GENL])

(DIE
  [LAMBDA (MES)
    (CPRIN1S -1 CRLF CRLF *********** AM FATAL COLLAPSE *********** CRLF MES CRLF CRLF)
    (HELP])

(FAN
  [LAMBDA (MSET MPAR MB1)
    (CAR (SORT (MAPCAR MSET (FUNCTION (LAMBDA (MS1)
			   (APPLYB MS1 MPAR MB1])

(FRAC-INCLU
  [LAMBDA (B1 B2)
    (COND
      ((EQ B1 B2)
	100)
      ((ISA B1 B2)
	99)
      ((ISA B2 B1)
	50)
      (T                                                                        (* NOTICE HOW CRUDE THIS IS.
										IMPROVE IT!!)
	 0])

(FRIPPLE
  [LAMBDA (RB)
    (CONS RB (MAPCONC (GETB RB P)
		      (QUOTE FRIPPLE])

(GCB
  [LAMBDA (N)
    [MAPC ONCE-LIST (FUNCTION (LAMBDA (C)
	      (SETB (CAR C)
		    (CDR C)
		    (REMOVE JTRASH (GETB (CAR C)
					 (CDR C]
    (SETQ ONCE-LIST INIT-ONCE-LIST)
    (FOR GCX IN (SORT (COPY CONCEPTS)
		      (QUOTE GET-TIME))
       AS GCI FROM 1 TO N DO (SWAPB GCX])

(GET-TIME
  [LAMBDA (B)
    (GETU B (QUOTE TIME])

(GEXEC
  [LAMBDA (GB)
    (APPLYB GB GPNAME])

(INIT-PART
  [LAMBDA (B P)
    (OR (GETP B P)
	(SETB B P NIL])

(JUST-ONCE
  [NLAMBDA (X X1)
    (COND
      ((SETQ X1 (EVAL X))
	(FRPLACA X (QUOTE COND))
	(FRPLACD X NIL)
	X1])

(LESS-INT
  [LAMBDA (A B)
    (ILESSP (CAR A)
	    (CAR B])

(LRU-TAG
  [LAMBDA (B)
    (PUTU B (QUOTE TIME)
	  (IQUOTIENT (CLOCK 2)
		     10000])

(MAX
  [LAMBDA (MSET MPAR)
    (COND
      [MSET (CAR (SORT (MAPCAR MSET MPAR]
      (T -1])

(MAX1
  [LAMBDA (MSET MPAR MB1)
    (CAR (SORT (MAPCAR MSET (FUNCTION (LAMBDA (MS1)
			   (APPLYB MB1 MPAR MS1])

(MORE-GENERAL
  [LAMBDA (B1 B2)
    (COND
      ((MEMB B1 (RIPPLE B2 (QUOTE GENL)))
	B2)
      ((MEMB B2 (RIPPLE B1 (QUOTE GENL)))
	B1)
      (T NIL])

(MORE-INT
  [LAMBDA (A B)
    (IGREATERP (CINT A)
	       (CINT B])

(MORE-SPECIFIC
  [LAMBDA (B1 B2)
    (COND
      ((MEMB B1 (RIPPLE B2 (QUOTE GENL)))
	B1)
      ((MEMB B2 (RIPPLE B1 (QUOTE GENL)))
	B2)
      (T NIL])

(NO-COMMEN
  [LAMBDA (X)
    (OR (NLISTP X)
	(NEQ (CAR X)
	     (QUOTE COMMENT])

(ONLY-COMS
  [LAMBDA (L)
    (EVERY L (FUNCTION (LAMBDA (L1)
	       (EQ (CAR L1)
		   (QUOTE COMMENT])

(PUTU
  [LAMBDA (B PROP PVAL)
    (COND
      ((CAR (ERRORSET B))
	(PUTL (EVAL B)
	      PROP PVAL))
      (T (SET B (LIST PROP PVAL])

(RE-JUDGE
  [NLAMBDA (RJ I1)
    (CPRIN1S 8 SUPPOSED TO RE-JUDGE RJ CRLF)
    (AND [SETQ I1 (ERSETQ (APPLY* (CAR RJ)
				  (QUOTE C-INT)
				  (EVAL RJ]
	 (NUMBERP I1)
	 (IGREATERP I1 EX-THRESH)
	 (CREATEB RJ])

(READ-LOOP
  [LAMBDA NIL
    (PROG NIL
      L11 (COND
	    ((READP))
	    (T (DISMISS 1000)
	       (GO L11])

(READ1CHAR
  [LAMBDA NIL
    (READ-LOOP)
    (CLEARBUF T T)
    (SETQ GPEEK (SYSBUF T))
    (SETQ GPEEK1 (GNC GPEEK))
    (OR GPEEK1 (READ1CHAR))                                                     (* OR (STREQUAL GPEEK "") 
										(BKSYSBUF GPEEK))
										(* AND (SETQ GS (LINBUF T)) 
										(BKLINBUF GS))
    GPEEK1])

(RIPPLE-SIMULT
  [LAMBDA (ATYPE DIRS)
    (COND
      ((CDR DIRS)
	(PROG ((NEW (LIST ATYPE))
	       (OLD (LIST ATYPE)))
	  L1  [SETQ OLD (MAPCONC OLD (FUNCTION (LAMBDA (AL1)
					 (MAPCONC DIRS (FUNCTION (LAMBDA (XTR-PART)
						      (MAPCONC (GETB AL1 XTR-PART)
							       (QUOTE XTR-BEING]
	      (SETQ OLD (INTERSECTION OLD OLD))
	      (AND (EQ NEW (SETQ NEW (UNION OLD NEW)))
		   (RETURN NEW))
	      (GO L1)))
      (DIRS (RIPPLE ATYPE (CAR DIRS)))
      ((LIST ATYPE])

(RIPPLE1
  [LAMBDA (B4 P4 DIR RTEMP)
    (COND
      ((LISTP B4)
	(SETQ GXTR-PART P4)
	[SOME (XTR-BEING B4)
	      (FUNCTION (LAMBDA (B5)
		  (SETQ RTEM2 (RIPPLE1 B5 P4 DIR]
	RTEM2)
      ((GETHASH (SETQ RTEMP (GLUE B4 P4))
		HCON)
	RTEMP)
      ((GETHASH B4 HCON)
	(RIPPLE1 (GETB B4 DIR)
		 P4 DIR])

(RUN-COMM-IF-MUST
  [LAMBDA (L)
    (COND
      ((NLISTP L)
	L)
      ((SUBSET L (QUOTE NLISTP)))
      [(MAPCAR [SUBSET L (FUNCTION (LAMBDA (X)
			   (EQ (CAR X)
			       (QUOTE OR-RUN:]
	       (FUNCTION (LAMBDA (Z)
		   (EVAL (CADR Z]
      [(SUBSET L (FUNCTION (LAMBDA (X)
		   (NEQ (CAR X)
			(QUOTE COMMENT]
      (T (SETQ CS-FAIL T)
	 (ADD-CANDS (LIST (LIST CS-INT (QUOTE FILLIN)
				Z
				(QUOTE EXS))
			  (LIST (SUB1 CS-INT)
				(QUOTE FILLIN)
				CS-B CS-P)))
	 NIL])

(SAME-TYPE
  [LAMBDA (B1 B2 BTYP)
    (OR (AND (EQ B1 BTYP)
	     (EQ B2 B1)
	     B1)
	(CADR (MEMB BTYP (COM-ANCES B1 B2])

(SATISFIES
  [LAMBDA NIL NIL])

(SEQX
  [LAMBDA (X1)
    (OR (EQUAL X1 (CAR X))
	(APPLYB (QUOTE STRUCTURE-EQUAL)
		(QUOTE ALGS)
		(APPEND (CAR X))
		(APPEND X1])

(SETBINT
  [LAMBDA (C X)
    (RPLACA (CDR C)
	    X])

(SETBINT
  [LAMBDA (C X)
    (RPLACA (CDR C)
	    X])

(SUB-CANDS
  [LAMBDA (SL)
    [MAPC SL (FUNCTION (LAMBDA (S)
	      (SOME CANDS (FUNCTION (LAMBDA (C)
			(AND (EQUAL (CACT C)
				    (CACT S))
			     (RPLACA C (IQUOTIENT (CINT C)
						  2]                            (* This is rather an inefficient way to 
										do this.)
    CANDS])

(SWAPB
  [LAMBDA (B PFILE)
    (COND
      ((GETU B (QUOTE FOUT)))
      ((PUTU B (QUOTE FOUT)
	     (LIST (SETQ PFILE (GETPROPERFILE))
		   (GETPROPERFILEPOS)))
	(PRIN2 (GETPROPLIST B)
	       PFILE)))
    (COND
      ((FMEMB B NOSWAP-CONCEPTS))
      ((SETPROPLIST B 0])

(SWGETB
  [LAMBDA (B P F)
    (LRU-TAG B)
    (COND
      ((GET B P))
      ((ZEROP (GETPROPLIST B))
	(SETQ F (GETU B (QUOTE FOUT)))
	[COND
	  ((ATOM F)
	    (LOADVARS (LIST (LIST (QUOTE (QUOTE PUTPROPS))
				  (KWOTE B)
				  (QUOTE $)))
		      F T))
	  (T (SETFILEPTR (CAR F)
			 (CADR F]
	(SETQ B (READ (CAR F)))
	(GET B P])

(SWSETB
  [LAMBDA (B P Q BP)
    (AND (FMEMB P XEQ-PARTS)
	 (PUTD (SETQ BP (GLUEE B P))
	       (LIST (QUOTE LAMBDA)
		     (GETARGS P)
		     (LIST (QUOTE SELF-COMPILE)
			   BP Q)))
	 (NOT (GETB B P))
	 (ATTACH (NCONC (LIST P (LIST BP))
			(GETARGS P))
		 (BPFS B)))
    (AND (GETU B (QUOTE FOUT))
	 (PUTU B (QUOTE FOUT)
	       NIL))
    (LRU-TAG B)
    (PUT B P Q])

(UNDO-INIT
  [LAMBDA (P L)                                                                 (* Old value was: (COND 
										((GETHASH P HUND) (APPLY* 
										(GETP P (QUOTE UNDO-INIT)) L)) 
										(L)))
    L])

(XEQ-CLEAN
  [LAMBDA (B B1 B2 B3)
    (MATCH (DREVERSE (UNPACK B)) WITH (B2←$
					(QUOTE -)
					B1←$))
    (SETQ B1 (PACK (DREVERSE B1)))
    (SETQ B2 (PACK (DREVERSE B2)))
    (AND (FMEMB B2 FACETS)
	 (GETHASH B1 HCON)
	 NIL)                                                                   (* NOTNEEDED APPARENTLY.
										PERHAPS: in the function CREATEB)
    ])

(XTR-BEING
  [LAMBDA (B)                                                                   (* This actually will depend on the 
										format of the part being worked on.
										This part is to be assigned to the 
										variable XTR-PART)
    (COND
      ((ATOM B)
	(AND (GETHASH B HCON)
	     (LIST B)))
      ((LISTP B)
	(COND
	  ((EQUAL (CAR B)
		  (QUOTE OR-RUN:))
	    (EVAL (CADR B)))
	  (T (MAPCONC B (QUOTE XTR-BEING])
)
[DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS 
  (ADDTOVAR NLAMA)
  (ADDTOVAR NLAML RE-JUDGE JUST-ONCE ALLQ)
]
(DECLARE: DONTCOPY
  (FILEMAP (NIL (716 8709 (ACEX-OLD 728 . 876) (ALLQ 880 . 1002) (CLEAN 1006 . 1298) (CLEANALL 1302 . 1455) (COM-ANCES
1459 . 1562) (DIE 1566 . 1689) (FAN 1693 . 1807) (FRAC-INCLU 1811 . 2072) (FRIPPLE 2076 . 2161) (GCB 2165 . 2461)
(GET-TIME 2465 . 2516) (GEXEC 2520 . 2567) (INIT-PART 2571 . 2636) (JUST-ONCE 2640 . 2759) (LESS-INT 2763 . 2825)
(LRU-TAG 2829 . 2919) (MAX 2923 . 3019) (MAX1 3023 . 3138) (MORE-GENERAL 3142 . 3299) (MORE-INT 3303 . 3373) (
MORE-SPECIFIC 3377 . 3535) (NO-COMMEN 3539 . 3623) (ONLY-COMS 3627 . 3734) (PUTU 3738 . 3878) (RE-JUDGE 3882 . 4100)
(READ-LOOP 4104 . 4220) (READ1CHAR 4224 . 4563) (RIPPLE-SIMULT 4567 . 5063) (RIPPLE1 5067 . 5381) (RUN-COMM-IF-MUST
5385 . 5885) (SAME-TYPE 5889 . 6017) (SATISFIES 6021 . 6052) (SEQX 6056 . 6191) (SETBINT 6195 . 6251) (SETBINT 6255
. 6311) (SUB-CANDS 6315 . 6616) (SWAPB 6620 . 6903) (SWGETB 6907 . 7251) (SWSETB 7255 . 7640) (UNDO-INIT 7644 . 7867)
(XEQ-CLEAN 7871 . 8252) (XTR-BEING 8256 . 8706)))))
STOP